package cn.opopopo.design_pattern_learn.行为型.observer;

import java.util.*;

// 被观察者：新闻平台
public class NewsPublisher {
    private List<NewsObserver> observers = new ArrayList<>();
    private String latestNews;

    // 注册观察者
    public void addObserver(NewsObserver observer) {
        observers.add(observer);
        System.out.println("用户已订阅新闻推送");
    }

    // 移除观察者
    public void removeObserver(NewsObserver observer) {
        observers.remove(observer);
        System.out.println("用户已取消订阅");
    }

    // 发布新闻（状态改变 → 通知所有观察者）
    public void publishNews(String news) {
        this.latestNews = news;
        System.out.println("\n📢 发布新闻: " + news);
        notifyObservers();
    }

    // 通知所有观察者
    private void notifyObservers() {
        for (NewsObserver observer : observers) {
            observer.update(latestNews);
        }
    }
}